Manuel Grau Roldán

Luis Nates Arechavaleta

Primero cargamos los datos en un DataFrame

Observamos que los dos ultimos datos tienen datos muy extraños, los eliminamos. En caso de ser necesario volveriamos aquí para verlos.

Vemos la información de la variable objetivo

1 Análisis descriptivo de los datos.

Antes de analizar los datos, dado que nos vamos a centrar en predecir si se va a pagar, no nos interesan los datos de los clientes que aún no han terminado de pagar, es decir un clinete que se ha retrasado 1 mes en el pago puede que llegue a saldar su deuda, por ello nos vamos a restringir a dichos casos.

Primero necesito crear un pd con solo dos categorías en loan_status: Fully Pais y Charged Off

Vemos la forma de los datos

A. Cantidad de valores nulos.

Analizamos cual es el porcentaje de valores nulos:

Hay una gran cantidad de variables con una gran cantidad de missings tanto en en los pagados como en los charged off, imputarlos podría suponer un problema, veremos en el punto dos cómo son las variables para ver que podemos hacer con ellas.

B. Tipo de variables.

Veamos de qué tipos son las variables a estudiar

Sabemos que hay variables enteras que no se han importado como tal por tener nan.

Creamos tres listas unas con las variables continuas , otra con las variables categoricas y otra con la variables enteras

C) distribución de los valores de la variable objetivo.

Realizamos un histograma y comparamos datos para comprobar cómo de desvalanceados están los datos que vamos a analizar.

Para el conteo absoluto:

Para el porcentaje:

Los unimos:

Hacemos el histograma.

Observamos hay una gran diferencia de tamaños, una forma de solventarlo dado que tenemos muchos datos es eliminar de forma aleatoria 345520-97047 datos de las personas que saldaron la deuda(undersampling).

Parece que están bastante desvalanceados haremos un valanceo en los puntos siguientes

D)Matriz de correlación en variables continuas.

Para ello deberemos hacer uso de las funciones auxiliares que nos ayudarán a calcular la matriz de correlaciones de las variables continuas.

Importamos todos los datos con los posibles estados

Eliminaremos variables que tienen alta correlación con otras que si dejaremos:

2. Valores missing

comprobamos los valores missing que tienen las variables categoricas

Como no tienen, los dejamos como están, hacemos lo mismo con las variables continuas y las enteras

Primero haremos una imputación manual sobre las variables enteras que lo necesiten transformandolas posteriormente a enteros.

Para las variables: mths_since_rcnt_il,
mths_since_last_record,
mths_since_recent_bc_dlq,
mths_since_last_major_derog,
mths_since_last_delinq,
mo_sin_old_il_acct,
mths_since_recent_revol_delinq.

Escogeremos asignar a los nan datos muy elevados ya que suelen ser valores de cantidad de meses sin haber cometido un delito o abrirse cuentas, así que si no pasa podemos asignarles valores elevados a la hora de hacer cálculos y lo interpretará como que llevan medio siglo sin cometer delitos o abrirse cuentas.

Para las variables:
open_act_il,
open_acc_6m,
open_il_12m,
open_rv_12m,
open_il_24m,
open_rv_24m, total_cu_tl,
inq_fi,
inq_last_12m,
emp_length.

Son datos sobre cuentas abiertas, si no tiene datos lo dejaremos a 0, es decir supondremos que no se han abierto una cuenta

Las demás variables las imputaremos.

Transformamos las variables enteras en int.

3. Transformar las variables continuas.

Codificamos la variables categóricas

Normalizamos los datos

4. Partición del conjunto de entrenamiento.

Haremos un balanceo de la variable objetivo que tal y como vimos estaba muy desbalanceada, dado que tenemos una gran cantidad de datos haremos un undersampling a la clase mayoritaria para que el ordenador pueda manejarlo.

Generamos los conjuntos de entrenamiento y de test:

5. Evaluación diferentes algoritmos de clasificación.

Definamos una función que ayude a tomar todas las normas en cada diseño basado en un algoritmo

A. Regresión logística

B. K-NN

Usaremos solo las variables continuas por ser muy costoso computacionalmente.

Comentamos la función por ser computacionalmente costosa pero abajo ponemos nuestros resultados.

9
0.6224548676943368
10
0.6203115983843047
11
0.6241859698293628
12
0.6238768444481082
13
0.6275657406644135
14
0.6276069573819141
15
0.6305127359657077
16
0.6304509108894568
150
0.6494312092984915
300
0.6504822355947573
1000
0.6505646690297585
1001
0.6502555436485038
2000
0.6497815513972467

Explorar es computacionalmente costoso y no poseemos ordenadores lo suficientemente potentes, por lo que nos quedamos con el que mejor accuraci saca de las prueba que hemos hecho k=1000.

C. Arbol de decisión simple

Observamos que k=7 parece ser el mejor modelo

6. ¿Cual de todas las métricas crees que es la más conveniente?

La accuracy y F-Score resumen con un solo dato lo bueno que es el modelo y viene bien para hacer un análisis poco exhaustivo , pero se quedan bastante corto , la curva roc puede estar bien, pero la que mejor resume lo bueno que el modelo, es la matriz de confusión, que te resume en que falla y en que no falla, aunque es difícil de comparar con otros modelos.

Ahora ordenaremos por orden los valores de las métricas

-Accuracy.

Por orden es:

Regresión con:0.6624969087461875
Decision_tree con:0.6511210947160169
knn con:0.6505646690297585

-F-score.

Por orden es:

Regresión con: 0.6660549336269651
knn con:0.6511210947160169
Decision_tree con: 0.6321302070883765

-Recall.

Por orden es:

knn con:0.6909248340411496 Regresión con: 0.6734012287139736
Decision_tree con:0.5997196223147652

-True negative rate

Por orden es:

Decision_tree con:0.7024844464587368
Regresión con: 0.6516006757035144
knn con:0.6102344361583784

-Precision

Por orden es:

Decision_tree con:0.6682440503537628
Regresión con: 0.6516006757035144
knn con:0.6588671938034533

-F-score.

Por orden es:

Regresión con: 0.6660549336269651
knn con: 0.6640380424014266
Decision_tree con:0.6321302070883765

Matriz de confusión.

Tras todos los análisis concluimos que pese a que sigue siendo un modelo regulero por fallar tanto, el mejor es el de regresión logística por ser el que suele tener mejores métricas tiene y mejor matriz de confusión.